package com.itany.corejava.code07_常用类.包装类;

/**
 * @author MissChen
 * @date 2024年03月01日 13:35
 */
public class Test02_装箱与拆箱 {
    public static void main(String[] args) {
        int i=1;
        //装箱：将基本数据类型转换成包装类
        //JDK5之前必须手动装箱
        //手动装箱
        Integer integer=new Integer(i);

        //JDK5之后支持自动装箱
        Integer integer2=i;

        //拆箱:将包装类转换成基本数据类型
        //JDK5之前手动拆箱
        int i1=integer.intValue();

        //JDK5之后支持自动拆箱
        int i2=integer2;

        int i3=10;
        int i4=10;
        System.out.println(i3==i4);//true

        Integer integer3=new Integer(10);
        Integer integer4=new Integer(10);
        System.out.println(integer3==integer4);//false
        System.out.println("------------");
        // 在进行运算比较时候发生了自动拆箱的操作
        // 当int类型与Integer类型的值进行比较的时候
        // 会自动将Integer类型拆箱为int类型
        // 因此，此时相当于两个int类型的值进行比较
        System.out.println(i3==integer3);

        //直接定义属于int类型
        // int i23=10;
        // 由于int类型不是Object的子类，会自动进行装修的操作，将int转换为Integer
        // 此时就属于父类的引用指向子类的对象，多态
        Object obj=10;

        test(100);//直接写数值的时候表示的是基本数据类型

        test(new Integer(100));


    }
    public static void test(int i){
        System.out.println("调用了int类型的变量");
    }
    public static void test(Integer i){
        System.out.println("调用了Integer类型的变量");
    }
}
